/********************************************
 * 功能说明: 日期格式验证注解
 * 模块名称: 验证模块
 * 系统名称: java敏捷开发平台
 * 软件版权:
 * 系统版本: 1.0.0
 * 开发人员: zhangfb
 * 开发时间: 2017年5月12日 下午1:41:42
 * 审核人员:
 * 相关文档:
 * 修改记录: 修改日期 修改人员 修改说明
 *********************************************/
package com.hyacinth.cloudnote.common.validator.constraints;


import com.hyacinth.cloudnote.common.validator.DateFormatValidator;

import javax.validation.Constraint;
import javax.validation.Payload;
import javax.validation.ReportAsSingleViolation;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;


/**
 * 日期格式验证注解
 * @author zhangfb
 * @version 1.0.0.1
 */
@Documented
@Constraint(validatedBy = DateFormatValidator.class)
@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
@Retention(RUNTIME)
@ReportAsSingleViolation
public @interface DateFormat {

    String message() default "时间必须是{value}格式";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    String value() default "yyyy-MM-dd HH:mm:ss";

    @Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER})
    @Retention(RUNTIME)
    @Documented
    @interface List {

        DateFormat[] value();
    }

}
